1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect.testing.google;
18
19 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
20 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
21 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
22 import static java.util.Collections.nCopies;
23
24 import com.google.common.annotations.GwtCompatible;
25 import com.google.common.collect.testing.features.CollectionFeature;
26 import com.google.common.collect.testing.features.CollectionSize;
27
28
29
30
31
32
33
34
35 @GwtCompatible
36 public class MultisetSetCountConditionallyTester<E> extends
37 AbstractMultisetSetCountTester<E> {
38 @Override void setCountCheckReturnValue(E element, int count) {
39 assertTrue(
40 "setCount() with the correct expected present count should return true",
41 setCount(element, count));
42 }
43
44 @Override void setCountNoCheckReturnValue(E element, int count) {
45 setCount(element, count);
46 }
47
48 private boolean setCount(E element, int count) {
49 return getMultiset().setCount(element, getMultiset().count(element), count);
50 }
51
52 private void assertSetCountNegativeOldCount() {
53 try {
54 getMultiset().setCount(samples.e3, -1, 1);
55 fail("calling setCount() with a negative oldCount should throw "
56 + "IllegalArgumentException");
57 } catch (IllegalArgumentException expected) {
58 }
59 }
60
61
62
63 @CollectionFeature.Require(SUPPORTS_ADD)
64 public void testSetCountConditional_negativeOldCount_addSupported() {
65 assertSetCountNegativeOldCount();
66 }
67
68 @CollectionFeature.Require(absent = SUPPORTS_ADD)
69 public void testSetCountConditional_negativeOldCount_addUnsupported() {
70 try {
71 assertSetCountNegativeOldCount();
72 } catch (UnsupportedOperationException tolerated) {
73 }
74 }
75
76
77
78 @CollectionFeature.Require(SUPPORTS_ADD)
79 public void testSetCountConditional_oldCountTooLarge() {
80 assertFalse("setCount() with a too-large oldCount should return false",
81 getMultiset().setCount(samples.e0, 2, 3));
82 expectUnchanged();
83 }
84
85 @CollectionSize.Require(absent = ZERO)
86 @CollectionFeature.Require(SUPPORTS_ADD)
87 public void testSetCountConditional_oldCountTooSmallZero() {
88 assertFalse("setCount() with a too-small oldCount should return false",
89 getMultiset().setCount(samples.e0, 0, 2));
90 expectUnchanged();
91 }
92
93 @CollectionSize.Require(SEVERAL)
94 @CollectionFeature.Require(SUPPORTS_ADD)
95 public void testSetCountConditional_oldCountTooSmallNonzero() {
96 initThreeCopies();
97 assertFalse("setCount() with a too-small oldCount should return false",
98 getMultiset().setCount(samples.e0, 1, 5));
99 expectContents(nCopies(3, samples.e0));
100 }
101
102
103
104
105
106
107 }